package dao;

import entity.User;
import org.apache.ibatis.annotations.Param;
import param.UserParam;

import java.util.List;

/**
 * @author 石小俊
 * @date 2024年04月03日 19:12
 */
public interface UserDao {

    void insertUser(User user);

    User selectById(Integer id);

    List<User> selectAll();

    void updateUser(User user);

    void deleteById(Integer id);

    void insertUser2(User user);

    User selectById2(Integer id);

    User selectById3(Integer id);

    User selectByUsernameAndPassword(UserParam param);

    User selectByUsernameAndPassword2(String username, String password);

    User selectByUsernameAndPassword3(@Param("username") String username, @Param("password") String password);

    List<User> selectByUsername(String username);
    List<User> selectByUsername2(String username);

    List<User> selectByUsernameAndPassword4(UserParam param);
    List<User> selectByUsernameAndPassword5(@Param("username") String username, @Param("password") String password);

    /**
     * 保存返回主键,在MyBatis中没有返回值
     * 返回的主键的值会通过配置自动设置到参数对象的主键属性中
     * @param user
     */
    void insertReturnPrimaryKey(User user);

    List<User> selectByParams(User userParam);
    List<User> selectByParams2(User userParam);
    List<User> selectByParams3(User userParam);
    List<User> selectByParams4(User userParam);

    void updateUserSelective(User user);
    void updateUserSelective2(User user);

    List<User> selectByIds(List<Integer> ids);
}
